//
//  BCUserManager.h
//  GSBlockChain
//
//  Created by guoshikeji_a on 2018/11/29.
//  Copyright © 2018 guoshikeji. All rights reserved.
//

#import <Foundation/Foundation.h>
//用户登录数据
#import "UserLoginDataModel.h"
#import "BCUserOverdueManager.h"
#import "BCUserLoginManager.h"

@class BCUserWalletData;
@class BCUserSafeCenterData;

//用户更新信息后发出通知
FOUNDATION_EXTERN NSString * const BCUserManagerUpdateUserLoginDataNotification;
//用户登录过期发出通知
FOUNDATION_EXTERN NSString * const BCUserManagerUserLoginOverdueNotification;
//登录用户信息清空发出通知
FOUNDATION_EXTERN NSString * const BCUserManagerClearLoginUserNotification;

NS_ASSUME_NONNULL_BEGIN

@interface BCUserManager : NSObject

+ (instancetype)sharedUser;

/**
 *BCUserOverdueManager 登录用户是否过期管理对象
 */
@property (nonatomic, strong, readonly) BCUserOverdueManager *userOverdue;

/**
 是否已经登录
 */
- (BOOL)isLogin;

/**
 logout 退出登录清空用户数据
 */
- (void)logout;
//
/**
 清空当前登录用户数据 在请求接口时返回用户权限错误后调用
 */
- (void)clearLoginUser;

/**
 *UserLoginDataModel
 */
@property (nonatomic, weak, readonly) UserLoginDataModel *userLogin;
/**
 登录成功或者修改信息后都会更新用户信息
 可以在此时记住这次登录用户的ID以便指纹或面容登录时使用
 */
- (void)updateUserLoginData:(UserLoginDataModel *)data;

/**
 *UserInfoModel
 */
@property (nonatomic, weak, readonly) UserInfoModel *userInfo;

//用户登录成功 更新登录数据
- (void)userLoginSuccessUpdateUserLoginData:(UserLoginDataModel *)data;

#pragma mark - 指纹登录或者面容登录处理
/**
 当前登录用户是否已经开启指纹或面容登录
 */
@property (nonatomic, assign, readonly) BOOL isOpenLocalAuthentication;

#pragma mark - 当程序运行时的一些缓存数据 通过此l管理器管理
/**
 *BCUserWalletData 我的钱包缓存数据
 */
@property (nonatomic, strong) BCUserWalletData *walletData;
/**
 *BCUserSafeCenterData 安全中心缓存数据
 */
@property (nonatomic, strong) BCUserSafeCenterData *safeCenterData;

/**
 清空缓存数据
 */
- (void)clearCacheData;


#pragma mark - 首页区域 reg_id
/**
 *reg_id
 */
@property (nonatomic, copy) NSString *reg_id;

@end

NS_ASSUME_NONNULL_END
